package com.sky.business.sys.service;

import com.sky.business.sys.domain.*;
import com.sky.common.docker.ContainerClient;

/**
 * 任务服务
 */
public interface TaskService {

    /**
     * 强制删除容器,并更新数据库状态
     * @param client 容器客户端
     * @param container 容器内容
     */
    void removeContainer(ContainerClient client, Container container);


    /**
     * 启动监控任务
     * @param systemConfig 系统配置
     * @param node 节点
     * @param containerConfig 容器配置
     */
    void startMonitorTask(SystemConfig systemConfig, Node node, ContainerConfig containerConfig);

    /**
     * 删除监控任务
     * @param node 节点
     */
    void removeMonitorTask(Node node);

    /**
     * 运行rtsp转推
     * @param systemConfig 系统配置
     * @param cameraConfig 设备
     */
    void startPubStreamTask(SystemConfig systemConfig, CameraConfig cameraConfig);


    /**
     * 删除推流任务
     * @param cameraConfig 设备
     */
    void  removePubStreamTask(CameraConfig cameraConfig);


    /**
     * 开始AI推流任务
     * @param systemConfig  系统设置
     * @param cameraConfig 设备
     */
    void startAiPubStreamTask(SystemConfig systemConfig,CameraConfig cameraConfig);


    /**
     * 停止AI推流任务
     * @param cameraConfig 设备
     */
    void removeAiPubStreamTask(CameraConfig cameraConfig);


    /**
     * 启动跟踪任务
     * @param systemConfig 系统配置
     * @param cameraConfig 设备
     */
    void startTrackTask(SystemConfig systemConfig,CameraConfig cameraConfig);

    /**
     * 移除追踪任务
     * @param cameraConfig 摄像机
     */
    void removeTrackTask(CameraConfig cameraConfig);

    /**
     * 检测追踪程序是否运行中
     * @param cameraConfig 设备id
     * @return 是否运行中
     */
    boolean isTrackRunning(CameraConfig cameraConfig);


    /**
     * 检测转推程序是否运行中
     * @param cameraConfig 设备id
     * @return 是否运行中
     */
    boolean isPubStreamRunning(CameraConfig cameraConfig);
}
